gusucode.com > 《MATLAB图像与视频处理实用案例详解》代码 > 《MATLAB图像与视频处理实用案例详解》代码/第 01 章 基于直方图优化的图像去雾技术/RemoveFogByLocalHisteq.m
function In = RemoveFogByLocalHisteq(I, flag) g1 = GetLocalHisteq(I(:, :, 1)); g2 = GetLocalHisteq(I(:, :, 2)); g3 = GetLocalHisteq(I(:, :, 3)); In = cat(3, g1, g2, g3); if flag figure; subplot(2, 2, 1); imshow(I); title('原图像', 'FontWeight', 'Bold'); subplot(2, 2, 2); imshow(In); title('处理后的图像', 'FontWeight', 'Bold'); Q = rgb2gray(I); W = rgb2gray(In); subplot(2, 2, 3); imhist(Q, 64); title('原灰度直方图', 'FontWeight', 'Bold'); subplot(2, 2, 4); imhist(W, 64); title('处理后的灰度直方图', 'FontWeight', 'Bold'); end function g = GetLocalHisteq(I) x=mat2gray(I); f=im2double(x); w=4; k=0.06; M=mean2(f); z=colfilt(f,[w w],'sliding',@std); m=colfilt(f,[w w],'sliding',@mean); A=k*M./z; g=A.*(f-m)+m; g=im2uint8(mat2gray(g));